# re 正则表达式模块
import re
# 尝试从字符串的开头匹配，匹配不到返回None
r1 = re.match('\d{3}', '1234abcd888')
# 返回对象
print(r1)
# 获取匹配的字符串
print(r1.group())

# 匹配整个字符串 第一次出现
r2 = re.search('\d{3}', '12a34565dfe6789')
print(r2)
print(r2.group())

# 匹配整个字符串，返回列表
r3 = re.findall('\d{3}', '123abc345667def678')
print(r3)

# 匹配整个字符串，返回的迭代对象，每个元素是一个匹配对象
r4 = re.finditer('\d{3}', '123abc345667def678')
print(r4)       # 迭代对象
for item in r4:
    print(item) # 匹配对象
    print(item.group())

# 按照正则表达式对字符串进行切割
words = 'How  are you? I am fine! And you'
# 正则匹配得到每个单词，空格任意个或？或！
r5 = re.split('\s+|\?|!', words)
print(r5)

# 字符串查找替换 正则字符串， 替换字符串， 目标字符串 flags=flags=re.IGNORECASE 忽略大小写
comment = 'wocao,how dongt fuck'
print(comment)
r6 = re.sub('wocao|fuck', '***', comment, flags=re.IGNORECASE)
print(r6)

# 提前将正则字符串编译为正则对象
re_obj = re.compile('\d{3}')
# 使用正则对象匹配字符串
r7 = re_obj.search('24334dgds65766123')
print(r7)
print(r7.group())
